home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
demovers
/
scripter
/
demo
/
saugfind.sic
< prev
next >
Wrap
Text File
|
1998-09-26
|
2KB
|
69 lines
/*
* Dieses Skript durchsucht alle Filelisten eines bestimmten
* Ordners nach einem Pattern;
* Ausgegeben wird jeweils die Kopfzeile (Nummer, Archivname etc)
* sowie die Zeile der Beschreibung, in der das Pattern das erste
* mal vorkommt.
*
* Der Pfad zu den Filelisten ist unten an die eigene Pfadstruktur
* anzupassen (da könnte auch ein Fileselect-Aufruf stehen, was aber
* auf Dauer sicher zu nervig ist).
*
* Das Pattern wird vom Script per Fensterdialog erfragt und darf
* Wildcards (*, ?) enthalten.
*/
path = "c:\\cat\\mff\\"; // Diesen Pfad anpassen
temp = dialog.input("[SaugFind] Suchmaske:", ""); // Pattern holen
mask = temp[1];
skip = 1;
filelist(files, path); // Verzeichnis
for (i = 0; i < files.length; i++) { // über alle Dateien...
name = files[i, 0];
if (!(files[j, 3] & 16) // Datei ist kein Ordner
&& match(name, "*.lst")) { // aber eine Liste
printf("***** %s *****\n", name);
name = path + name;
while (getline(name, line)) { // Datei durchlesen
/*
* Die Kopfzeilen einer Fileliste erkennt man am
* einfachsten daran, daß sie direkt mit einer Ziffer
* (erstes Zeichen der Filenummer) beginnen;
* solche Kopfzeilen merken wir uns für spätere Ausgaben
*/
c = line[0];
if (c >= '0' && c <= '9') {
head = line;
skip = 0;
}
/*
* Wenn gerade nicht vorgepult wird, dann testen wir,
* ob das Pattern auf die aktuelle Zeile paßt
*/
if (skip == 0 && match(line, mask)) {
/*
* Wenn das Pattern in der Kopfzeile vorkommt,
* dann geben wir nur die Kopfzeile aus, ansonsten
* die Kopfzeile und die Beschreibungszeile
*/
if (head == line)
print(head);
else
printf("%s\n (%s)\n", head, line);
/*
* Da jede Kopfzeile nur einmal ausgegeben werden
* soll, überspringen wir den Rest der Beschreibung
*/
skip = 1;
}
}
fclose(name);
}
}